Объектно-ориентированное и визуальное программирование. Простые типы данных Delphi (Делфи)

Первые языки программирования появились в 50–х годах ХХ века. Они были ориентированы на применение в конкретных предметных областях(для научных расчетов, в экономике и т.д.). Очень много языков программирования появилось в 60-70-х годах, а за всю историю программирования языков было создано более тысячи, но широкое распространение получили далеко не все из них.

В основе любого языка программирования должна лежать определенная технология программирования. До появления операционной системы WINDOWS, разработанные к тому времени технологии программирования подразумевали последовательное выполнение программы, т. е. после запуска программы ее инструкции выполнялись последовательно одна за другой. Основные шаги при создании программы были следующими:

  1. Написать программу
  2. Запустить программу на выполнение
  3. Ждать окончания работы программы
  4. Проанализировать результаты

Такая схема программирования, не позволяла создавать программы, активно взаимодействующие с пользователем и с появлением операционной системы WINDOWS она перестала быть приемлемой. На смену ей пришла объектно-ориентированная технология программирования. Это ключевая технология, которая значительно упростила создание приложений для операционной системы WINDOWS. Программы созданные на основе данной технологии могут реагировать на действия пользователя и события операционной системы. Такая программа после своего запуска ждет событий, возникающих в ответ на действия пользователя или сигналов операционной системы. После получения события оно обрабатывается соответствующей программой-обработчиком и программа снова переходит в режим ожидания события. Технология ООП позволяет создавать программы, поддерживающие активный диалог с пользователем и поэтому хорошо подходит для создания программ, работающих в среде WINDOWS. Центральным понятием объектно-ориентированного программирования(ООП) является понятие объекта. Объект можно охарактеризовать как базовый элемент программы, имеющий свои свойства, методы и события. Свойства объекта-характеристики объекта(его размер, цвет и т. д.). Методы объекта- программа, определяющая реакцию объекта в ответ на возникновение определенных событий. В основе технологии ООП лежат три следующих принципа:

  1. Инкапсуляция-под этим принципом понимают то, что информация об объекте(его свойства, методы и события) содержатся в описании этого объекта. Например, в описании объекта “Автомобиль” содержатся, как его свойства(цвет, вес, размеры и т. д.), так и его методы и события(при повороте ключа зажигания(событие) включается стартер, начинается подача топлива и т. д., все эти действия автомобиль проделывает сам, так как они были заложены в него при его создании(описании)).
  2. Наследование-этот принцип означает, что один объект может быть построен на базе описания другого объекта, при этом наследуются свойства, методы и события другого объекта. Например, на базе существующего объекта “Автомобиль”, используя принцип наследования, можно легко создать объект “Автомобиль с откидным верхом”, для этого достаточно только добавить необходимые для нового объекта свойства, методы и события, а не создавать объект с самого начала.
  3. Полиморфизм-способность различных объектов использовать один и тот же метод. Например, метод ”Печать текста” может использоваться объектом “Экран” и объектом “Принтер”, в первом случае текст выводится на экран, во втором – на принтер.

В последнее время наиболее бурное развитие получила технология визуального программирования. В ее основу легла технология ООП и возможность сопоставления созданному объекту его визуального воплощения. Таким образом при использовании данной технологии значительно упрощается создание объектов и работа с ними. Если для поддержания ООП были созданы среды программирования, содержащие в себе язык программирования и среду разработчика, то для реализации технологии визуального программирования создаются визуальные системы программирования, в которых гармонично сочетаются непосредственно само программирование, основанное на объектно-ориентированной технологии, визуальное проектирование интерфейса программы и услуги среды разработчика. Разработка приложения в такой системе состоит из двух основных частей:

  1. Разработка внешнего интерфейса посредством визуального проектирования.
  2. Разработка части программы, отвечающей за обработку информации посредством создания программ-обработчиков событий.

Приложение, основанное на обработке событий, сначала загружается, а затем останавливается и ждет возникновения события, после этого запускается программа-обработчик после выполнения которой приложение снова переходит в состояние ожидания события.

Простые типы данных и операции над ними.

В языке Object Pascal существуют те же типы и операции над ними , что и в Turbo Pascalе Переменные этих типов могут в каждый момент времени иметь только одно значение. К ним относятся следующие типы:

Целочисленные
Литерные (символьные)
Логические (булевские)
Вещественные

Все типы, кроме вещественного, являются порядковыми, то есть значения переменных каждого из этих типов образуют упорядоченную конечную последовательность. Номера соседних значений в ней отличаются на единицу.

Для значений и имен переменных порядковых типов можно применять следующие функции:

low (Т) — минимальное значение данных типа т
High (Т) — максимальное значение данных типа т
Ord(X) — порядковый номер значения выражения х
Pred(x) — значение, предшествующее значению выражения х
succ(x) — значение, следующее после значения выражения х

Кроме того, к ним применимы следующие процедуры:
Dec (X) — уменьшение значения переменной х на единицу
Inc(X) — увеличение значения переменной х на единицу

Для порядковых типов программист может создавать перечисляемые и интервальные типы. Эти типы также называют пользовательскими, или определяемыми пользователем. Их применение улучшает внешний вид программы и облегчает поиск ошибок.

Целочисленные типы

Целочисленные типы данных могут быть физическими и общими. Физические типы Delphi приводятся в таблице

ОбозначениеДиапазонПредставление в памяти
Shortint
Smallint
Longint
Int64
Byte
Word
Longword
-128—127
-32768—32767
-2147483648—2147483647
-263— 263-1
0—255
0—65 535
0—4 294 967 295
1 байт, со знаком
2 байта, со знаком
4 байта, со знаком
8 байтов, со знаком
1 байт, без знака
2 байта, без знака
4 байта, без знака

Кроме физических типов, определены два общих типа (табл. 2.2). Кроме физических типов, определены два общих типа..

Обозначение   ДиапазонПредставление в памяти
IntegerCardinal-2147483648—2147483647
0-4294967295
4 байта, со знаком
4 байта, без знака

Для записи целых чисел можно использовать цифры и знаки «+» и «-«. Если знак числа отсутствует, то число считается положительным. При этом число может быть представлено как в десятичной, так и в шестнадцатерич-ной системе счисления. Если число записано в шестнадцатеричной системе, то перед ним ставится знак $ (без пробела), а допустимый диапазон значений есть $00000000-$FFFFFFFF.

Литерные типы

Значениями литерного типа являются элементы из набора литер, то есть отдельные символы. Для символов также имеются физические и общий типы. Физические типы представлены типами Ansichar и widechar.

Символ типа Ansichar занимает один байт, а для кодирования символов используется код Американского национального института стандартов ANSI (American National Standards Institute). Символ типа widechar занимает два байта, а для кодирования символов используется международный набор символов Unicode. Набор символов Unicode включает более 60 тыс. элементов и позволяет кодировать символы национальных алфавитов. Первые 256 символов Unicode совпадают с кодом ANSI.

Кроме физических типов в Object Pascal определен один общий тип char, который эквивалентен типу Ansichar.
Для символов применимы следующие функции:
Chr(X) : char — возвращает символ с кодом, равным значению целочисленного выражения х.
upCase (С) : char — преобразует символ с в символ с верхнего регистра

Логические типы

К логическому типу данных в Object Pascal относятся следующие: Boolean, ByteBool, wordBool и LongBool. В программе рекомендуется использовать тип Boolean, остальные типы введены в целях совместимости с другими системами программирования.
Этот тип представлен двумя возможными значениями: True (Истина) и False (Ложь). Для представления логического значения требуется один байт памяти.

Перечислимые типы

Перечислимый тип задается непосредственно перечислением всех значений (имен), которые может принимать переменная данного типа. Отдельные значения указываются через запятую, а весь список значений заключается в круглые скобки.

Туре <имя типа> = (<Имя1>, … , <имяМ>);

Пример. Описание переменных перечислимых типов.
Type Day = (Su, Mo, Th, We, To, Fr, st);
Var dl,d2,d3: Day;
Season: (Winter, Spring, Summer, Autumn);

Тип Day описан явно и для него определены значения — дни недели. Переменные dl, d2, d3 могут принимать одно из перечисленных значений. Попытка присвоить им любое другое значение вызовет программную ошибку. Второй тип определен анонимно (не имеет имени) и задается перечислением значений при объявлении соответствующей переменной Season. Последняя также является переменной перечислимого типа и может принимать значения 4-х указанных времен года.

Достоинством перечислимых типов является то, что они облегчают контроль за значениями переменных, так как переменной нельзя присвоить предварительно не перечисленное значение. Определенным недостатком их использования является то, что при вводе и выводе значений перечислимых типов нельзя указывать имена соответствующих переменных в процедурах ввода/вывода.

Интервальные типы

Интервольные типы описываются путем задания двух констант, определяющих границы допустимых для данных типов значений. Эти границы и определяют интервал (диапазон) значений.

Интервал можно задать только для данных порядкового типа, то есть для любого простого типа кроме вещественного.
Формат описания интервального типа:

Туре <Имя типа> = <Константа1> .. <Константа2>;

Пример. Описание переменных интервальных типов.
Type Dayl_31 = 1. .31; Var ctayl,day2 : Dayl_31;

Вещественные типы

Вещественные типы представлены в Object Pascal физическими и общими типами.

ОбозначенияMinMaxТочностьРазмер(байт)
RealSingleDouble2.9х10391,7х10455,0х10-3241,7х10383,4×10351,7х1030811-127-815-16648

Общие типы

ОбозначенияMinMaxТочностьРазмер(байт)
ExtendedCompCurrency3.6х1049512хЮ63+1-922337203685477,58081,1хЮ49322хЮ63-1922337203685477,580719-2019-2019-201088

Общим является тип Real, который соответствует типу Double.

Запись вещественных чисел возможна в форме с фиксированной и в форме с плавающей точкой. Типы Соmр и Currency представляют вещественные числа с фиксированной точкой и введены для точных расчетов денежных сумм. Тип Соmр фактически представляет целые числа, но относится к вещественным типам. При присваивании переменной этого типа вещественного значения оно автоматически округляется до ближайшего целого.

К выражениям вещественных типов применимы следующие функции:
Round (X) — округленное значение выражения х
Trunc(x) — целая часть значения выражения х

Действия над типами данных

В модулях System, sysUtils и Math содержится большое количество функций для работы с числовыми данными, которые можно использовать в арифметических выражениях. Отметим следующие функции:

Abs (X) — абсолютное значение х.
Sqrt (X) — квадратный корень из х.Sqr(X) — возведение х в квадрат.Ln(x) — натуральный логарифм х.
Ехр(Х) — возведение числа е в степень х.
Sin(X) — синус угла х, заданного в радианах.
Кроме этих функции имеются и другие тригонометрические функции, как tg(x), ctg(x), arcsin(x), arccos(x), 1оg10(х) и др.
Div — целочисленное частное от деления двух чисел.
Mod — целочисленный остаток от деления двух чисел
pi — пи — 3.14159265358979
Power(x,y) – возведение числа х в степень у.
IntPower(x,y) — возведение числа х в степень у, если известно, что показатель у — целое число

Для их использования необходимо подключить в своей программе модульMath:
uses
Windows, Messages, …. StdCtrls, ExtCtrls, Math;

Int(x) усекает значение числа х вещественного типа до целого числа, однако тип результата в последнем случае получается вещественным.
Frac(x) возвращает дробную часть вещественного аргумента.

Над данными целочисленного типа можно выполнять также следующие побитовые (поразрядные) операции:
Shl — сдвиг влево
Shr — сдвиг вправо
And — И (арифметическое умножение)
Or — ИЛИ (арифметическое сложение)
Хог — арифметическое исключающее ИЛИ
Not — HE (арифметическое отрицание)

Особенностью побитовых операций является то, что они выполняются над операндами поразрядно.
Пример. Использование побитовых операций.
а:=18б; b:=99
Not 187
a Or b 251
a And b 34
а Хог b 217

Например, результат выполнения операции And получается следующим образом:
10111010    186
01100011     99
00100010     34